from openai import OpenAI
import json
import string
import random
import re
import log.logger as log

client = OpenAI(
    # 将这里换成你在aihubmix api keys拿到的密钥
    api_key="sk-0ccKL5RNr5VAXHfr3a8dF2Bb442949BbA8Af2d5bDbF9CaC0",
    # 这里将官方的接口访问地址，替换成aihubmix的入口地址
    base_url="https://aihubmix.com/v1"
)


def response_string(wenan, system_prompt):
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {'role': 'system', 'content': system_prompt},
            {'role': 'user', 'content': wenan}
        ],
    )
    res = response.choices[0].message.content
    json_pattern = r'```json([\s\S]*?)```'
    matches = re.search(json_pattern, res)
    print(matches)
    if matches:
        extracted_json = matches.group(1)
    else:
        extracted_json = res
    data = json.loads(extracted_json)
    return data.get("property") or data.get("title")


def response_string_json(wenan, system_prompt):
    retries = 5  # 设置重试次数
    for _ in range(retries):
        try:
            response = client.chat.completions.create(
                model="gpt-4o",
                messages=[
                    {'role': 'system', 'content': system_prompt},
                    {'role': 'user', 'content': wenan}
                ],
            )
            res = response.choices[0].message.content
            json_pattern = r'```json([\s\S]*?)```'
            matches = re.search(json_pattern, res)
            if matches:
                extracted_json = matches.group(1)
            else:
                extracted_json = res
            data = json.loads(extracted_json)
            print(data)
            return data['title'], data['label_list']
        except Exception as e:
            print(f"<< 调用OpenAi 获取内容异常: {e}")

    # 如果重试次数达到上限仍然失败，则抛出异常
    raise RuntimeError("Failed to get response after multiple retries")


if __name__ == "__main__":
    di = random.randint(2, 5)
    title_msg = ""
    if di == 2:
        title_msg = f"{di}个标签，如 ['可爱','打呼']"
    elif di == 3:
        title_msg = f"{di}个标签，如 ['可爱','打呼','无敌']"
    elif di == 4:
        title_msg = f"{di}个标签，如 ['可爱','打呼','呆萌','无敌']"
    elif di == 5:
        title_msg = f"{di}个标签，如 ['可爱','打呼','呆萌','情侣','无敌']"
    system_prompt = f"我将给你一些标签结合给你的字母联想出一句话(title)可以是随机类型，并且生成{title_msg}(label_list)。不能出现（新年相关，表情包，字母，英文）及标点符号(，)。要具有互动性质结合目前网络热梗及创新，以10岁的智商及普遍的话术来回答我,字数必须要在12~20个字之间，只能返回一个，最后按照严格的JSON格式返回给我。"
    # 从所有字母（大小写）中随机选择一个字符
    random_number = random.randint(2, 20)
    random_letter_random = ''.join(random.choice(string.ascii_letters) for _ in range(random_number))

    print("随机字母:", random_letter_random)
    random_letter = "gif的第1个情绪:不开心,生气,标题:打你，让你惹我生气，不开心，gif的第2个情绪:委屈,温馨,可怜,标题:新年快乐,求你啦，gif的第3个情绪:开心,高兴,愉快,幽默,标题:花花,开花,开心到发芽，gif的第4个情绪:哦耶,幽默,搞笑,标题:胜利,King,赢了，gif的第5个情绪:开心   ,快乐,高兴,幸福,愉快,新年快乐,标题:祝福你，gif的第6个情绪:欢快,高兴,开心,愉快,快乐,得瑟,标题:弹走鱼尾纹,可爱，gif的第7个情绪:空,标题:空，gif的第8个情绪:开心,愉快,欢快,幽默,标题:在吗,hi,敲敲，gif的第9个情绪:无聊,幽默,搞笑,标题:转圈圈,晕了,无聊，gif的第10个情绪:躺平,标题:已睡 勿扰,好梦,我睡喽,晚安,睡觉,晚安咯，gif的第11个情绪:空,标题:空，gif的第12个情绪:开心,高兴,傲娇,得瑟,标题:还得是我,不愧是我，gif的第13个情绪:欢快,新年快乐,标题:财运来,发财，gif的第14个情绪:空,标题:鸡腿在我手，gif的第15个情绪:空,标题:空，gif的第16个情绪:开心,愉快,高兴,快乐,温馨,标题:来啦,哇塞，"
    # 发送用户消息并获得模型回复
    response = response_string_json(f"{random_letter}{random_letter_random}", system_prompt)
    print(response)
